home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 1_2002.ISO / Data / Zips / HTTP File 212926172001.psc / test / DLMain.ctl (.txt) < prev    next >
Encoding:
Visual Basic Form  |  2001-06-18  |  15.5 KB  |  488 lines

  1. VERSION 5.00
  2. Object = "{48E59290-9880-11CF-9754-00AA00C00908}#1.0#0"; "MSINET.OCX"
  3. Begin VB.UserControl DownLoad 
  4.    CanGetFocus     =   0   'False
  5.    ClientHeight    =   480
  6.    ClientLeft      =   0
  7.    ClientTop       =   0
  8.    ClientWidth     =   480
  9.    InvisibleAtRuntime=   -1  'True
  10.    MaskColor       =   &H000000FF&
  11.    MaskPicture     =   "DLMain.ctx":0000
  12.    Picture         =   "DLMain.ctx":0844
  13.    PropertyPages   =   "DLMain.ctx":1086
  14.    ScaleHeight     =   480
  15.    ScaleWidth      =   480
  16.    ToolboxBitmap   =   "DLMain.ctx":10A8
  17.    Begin InetCtlsObjects.Inet I1 
  18.       Left            =   600
  19.       Top             =   480
  20.       _ExtentX        =   1005
  21.       _ExtentY        =   1005
  22.       _Version        =   393216
  23.    End
  24. Attribute VB_Name = "DownLoad"
  25. Attribute VB_GlobalNameSpace = False
  26. Attribute VB_Creatable = True
  27. Attribute VB_PredeclaredId = False
  28. Attribute VB_Exposed = False
  29. Attribute VB_Ext_KEY = "PropPageWizardRun" ,"Yes"
  30. Private Declare Function InternetGetConnectedState Lib "wininet" (lpdwFlags As Long, ByVal dwReserved As Long) As Boolean
  31. Dim a_Resume As Boolean
  32. Dim c_Cancel As Boolean
  33. Dim c_Pause As Boolean
  34. Dim m_URL As String
  35. Dim m_FileSize As Long
  36. Dim m_CHUNK As Long
  37. Dim m_FileExists As Boolean
  38. Dim m_Percent As Long
  39. Dim m_Status As String
  40. Dim m_BYTES As Long
  41. Dim m_SaveLocation As String
  42. Dim m_KeepType As Boolean
  43. Dim m_OnlineCheck As Boolean
  44. Dim m_PromptOverwrite As Boolean
  45. Dim m_Connected As Boolean
  46. Dim m_Resume As Boolean
  47. Dim m_ROLLBACK As Long
  48. Dim m_InDL As Boolean
  49. Dim m_UserName As String
  50. Dim m_Password As String
  51. Dim t_OldTime As Single
  52. Dim t_Time As Single
  53. Dim r_RateTransfer As Single
  54. Const INTERNET_CONNECTION_MODEM = 1
  55. Const INTERNET_CONNECTION_LAN = 2
  56. Const INTERNET_CONNECTION_PROXY = 4
  57. Const d_URL = "http://members.tripod.com/darkmsoft/index.html"
  58. Const d_CHUNK = 1024
  59. Const d_SaveLocation = "C:\File1.tmp"
  60. Const d_KeepType = False
  61. Const d_OnlineCheck = False
  62. Const d_PromptOverwrite = False
  63. Const d_ROLLBACK = 5120
  64. 'error codes
  65. '1 Unknown error
  66. '2 File doesn't exist
  67. '3 Server timed out
  68. '4 canceled
  69. '5 No Connection To Internet
  70. '401 Unauthorized Access
  71. '403 Access Denied
  72. Event DLComplete()
  73. Event DLError(lpErrorDescription As String)
  74. Event DLECode(lErrorCode As Long)
  75. Event RecievedBytes(lnumBYTES As Long)
  76. Event Percent(lPercent As Long)
  77. Event StatusChange(lpStatus As String)
  78. Event Rate(lpRate As String)
  79. Event TimeLeft(lpTime As String)
  80. Event ConnectionState(strState As String)
  81. Public Property Get InDL() As Boolean
  82. InDL = m_InDL
  83. End Property
  84. Public Property Get AResume() As Boolean
  85. AResume = a_Resume
  86. End Property
  87. Public Property Get CPause() As Boolean
  88. CPause = c_Pause
  89. End Property
  90. Public Property Get CCancel() As Boolean
  91. CCancel = c_Cancel
  92. End Property
  93. Public Property Get ROLLBACK() As Long
  94. ROLLBACK = m_ROLLBACK
  95. End Property
  96. Public Property Let ROLLBACK(ByVal lnumBYTES As Long)
  97. m_ROLLBACK = ROLLBACK
  98. PropertyChanged "ROLLBACK"
  99. End Property
  100. Public Property Get ResumeSupported() As Boolean
  101. ResumeSupported = a_Resume
  102. End Property
  103. Public Property Get Connected() As Boolean
  104. Connected = m_Connected
  105. End Property
  106. Public Property Get PromptOverwrite() As Boolean
  107. Attribute PromptOverwrite.VB_ProcData.VB_Invoke_Property = "DownLoad_Properties"
  108. PromptOverwrite = m_PromptOverwrite
  109. End Property
  110. Public Property Let PromptOverwrite(ByVal DoPrompt As Boolean)
  111. m_PromptOverwrite = DoPrompt
  112. PropertyChanged "PromptOverwrite"
  113. End Property
  114. Public Property Get OnlineCheck() As Boolean
  115. OnlineCheck = m_OnlineCheck
  116. End Property
  117. Public Property Let OnlineCheck(ByVal DoCheck As Boolean)
  118. m_OnlineCheck = DoCheck
  119. PropertyChanged "OnlineCheck"
  120. End Property
  121. Public Property Get KeepType() As Boolean
  122. KeepType = m_KeepType
  123. End Property
  124. Public Property Let KeepType(ByVal IsKeep As Boolean)
  125. m_KeepType = IsKeep
  126. PropertyChanged "KeepType"
  127. End Property
  128. Public Property Get FileExists() As Boolean
  129.   FileExists = m_FileExists
  130. End Property
  131. Public Property Get FileSize() As Long
  132.   FileSize = m_FileSize
  133. End Property
  134. Public Property Get Url() As String
  135. Attribute Url.VB_ProcData.VB_Invoke_Property = "DownLoad_Properties"
  136.   Url = m_URL
  137. End Property
  138. Public Property Get CHUNK() As Long
  139. Attribute CHUNK.VB_ProcData.VB_Invoke_Property = "DownLoad_Properties"
  140. CHUNK = m_CHUNK
  141. End Property
  142. Public Property Get SaveLocation() As String
  143. Attribute SaveLocation.VB_ProcData.VB_Invoke_Property = "DownLoad_Properties"
  144. SaveLocation = m_SaveLocation
  145. End Property
  146. Public Property Let SaveLocation(ByVal New_Location As String)
  147. m_SaveLocation = New_Location
  148. PropertyChanged "SaveLocation"
  149. End Property
  150. Public Property Let CHUNK(ByVal New_CHUNK As Long)
  151. m_CHUNK = New_CHUNK
  152. PropertyChanged "CHUNK"
  153. End Property
  154. Public Property Let Url(ByVal New_Url As String)
  155. m_URL = New_Url
  156. PropertyChanged "Url"
  157. End Property
  158. Private Sub UserControl_InitProperties()
  159. m_URL = d_URL
  160. m_CHUNK = d_CHUNK
  161. m_SaveLocation = d_SaveLocation
  162. End Sub
  163. Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  164. m_URL = PropBag.ReadProperty("URL", d_URL)
  165. m_CHUNK = PropBag.ReadProperty("CHUNK", d_CHUNK)
  166. m_SaveLocation = PropBag.ReadProperty("SaveLocation", d_SaveLocation)
  167. m_KeepType = PropBag.ReadProperty("KeepType", d_KeepType)
  168. m_OnlineCheck = PropBag.ReadProperty("OnlineCheck", d_OnlineCheck)
  169. m_PromptOverwrite = PropBag.ReadProperty("PromptOverwrite", d_PromptOverwrite)
  170. End Sub
  171. Private Sub UserControl_Resize()
  172. UserControl.Height = 480
  173. UserControl.Width = 480
  174. End Sub
  175. Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
  176. Call PropBag.WriteProperty("URL", m_URL, d_URL)
  177. Call PropBag.WriteProperty("CHUNK", m_CHUNK, d_CHUNK)
  178. Call PropBag.WriteProperty("SaveLocation", m_SaveLocation, d_SaveLocation)
  179. Call PropBag.WriteProperty("KeepType", m_KeepType, d_KeepType)
  180. Call PropBag.WriteProperty("OnlineCheck", m_OnlineCheck, d_OnlineCheck)
  181. Call PropBag.WriteProperty("PromptOverwrite", m_PromptOverwrite, d_PromptOverwrite)
  182. End Sub
  183. Sub DownLoad()
  184. On Error GoTo DLE
  185. Dim lpHeader As String
  186. Dim lpdestination As String
  187. Dim lpdestination2 As String
  188. Dim strreturn As String
  189. Dim CHUNK As Long
  190. Dim bData() As Byte
  191. Dim intfile As Integer
  192. Dim lBR As Long
  193. If c_Cancel = True Then
  194. Exit Sub
  195. End If
  196. If m_OnlineCheck = True Then
  197.     If m_Connected = False Then
  198.         RaiseEvent DLECode(5)
  199.         RaiseEvent DLError("No Connection Found!")
  200.         RaiseEvent StatusChange("Download aborted, no connection present!")
  201.         I1.Cancel
  202.         Exit Sub
  203.     End If
  204. End If
  205. I1.Url = m_URL
  206. CHUNK = m_CHUNK
  207. lpdestination = m_SaveLocation
  208. intfile = FreeFile()
  209. If m_KeepType = True Then
  210. lpdestination = KeepSave(m_URL, m_SaveLocation)
  211. End If
  212. If m_PromptOverwrite = True Then
  213.     If Dir$(lpdestination) > " " Then
  214.         strreturn = MsgBox("Would you like to overwrite the file at: " & lpdestination & " ?", vbInformation + vbYesNo, "Overwrite?")
  215.             If strreturn = vbYes Then
  216.                 Kill lpdestination
  217.             Else
  218. 404:            lpdestination2 = InputBox("Please type in a new file path and name." & vbCrLf & "Example: C:\File2.txt", "New File...", lpdestination)
  219.                     If lpdestination2 <= " " Then
  220.                         MsgBox "You didn't specify a file!", vbExclamation + vbOKOnly, "Error!"
  221.                         GoTo 404
  222.                     End If
  223.                     If lpdestination = lpdestination2 Then
  224.                         strreturn = MsgBox("You typed in the same file! Would you like type in a different file?", vbCritical + vbYesNo, "Try Again?")
  225.                             If strreturn = vbYes Then
  226.                                 GoTo 404
  227.                             End If
  228.                     End If
  229.             End If
  230.     End If
  231.     If Dir$(lpdestination) > " " Then
  232.         Kill lpdestination
  233.     End If
  234. End If
  235. Open lpdestination For Binary Access Write As #intfile
  236. RaiseEvent StatusChange("Opening " & lpdestination & " For DATA Input.")
  237. m_InDL = True
  238.     If c_Cancel = True Then
  239.     c_Cancel = False
  240.     Close #intfile
  241.     RaiseEvent DLECode(4)
  242.     RaiseEvent StatusChange("Cancelled.")
  243.     Exit Sub
  244.     End If
  245.     bData = I1.GetChunk(CHUNK, icByteArray)
  246.     Put #intfile, , bData
  247.     lBR = lBR + UBound(bData, 1) + 1
  248.     m_BYTES = lBR
  249.     r_RateTransfer = lBR / (Timer - t_OldTime)
  250.     t_Time = (m_FileSize - lBR) / r_RateTransfer
  251.     RaiseEvent Rate(FormatFileSize(r_RateTransfer))
  252.     RaiseEvent TimeLeft(FormatTime(t_Time))
  253.     RaiseEvent RecievedBytes(lBR)
  254.     RaiseEvent Percent(Round((lBR / m_FileSize) * 100, 0))
  255.     RaiseEvent StatusChange("Recieving File, Inputting DATA to File.")
  256.     If c_Pause = True Then
  257.     While c_Pause = True
  258.     DoEvents
  259.     RaiseEvent StatusChange("Paused.")
  260.     Wend
  261.     End If
  262. Loop While UBound(bData, 1) > 0
  263. Close #intfile
  264. m_InDL = False
  265. RaiseEvent DLComplete
  266. RaiseEvent StatusChange("Download Successful!")
  267. I1.Cancel
  268. Exit Sub
  269. RaiseEvent DLError("Error Downloading File from : " & m_URL)
  270. RaiseEvent StatusChange("Download Aborted Due To Error In Download!")
  271. RaiseEvent DLECode(1)
  272. I1.Cancel
  273. Exit Sub
  274. End Sub
  275. Sub GetFileInformation()
  276. On Error GoTo Ge
  277. Dim sHeader As String
  278. Dim blnreturn As Boolean
  279. If c_Cancel = True Then
  280. c_Cancel = False
  281. End If
  282. If m_OnlineCheck = True Then
  283. blnreturn = IsOnline
  284.     If blnreturn = False Then
  285.         MsgBox "You are not currently connected to the internet!" & vbCrLf & "The download will be aborted!"
  286.         m_Connected = False
  287.         RaiseEvent DLECode(5)
  288.         RaiseEvent DLError("No Connection Found!")
  289.         RaiseEvent StatusChange("Download aborted, no connection present!")
  290.         Exit Sub
  291.     Else
  292.         m_Connected = True
  293.     End If
  294. End If
  295. I1.Url = m_URL
  296. I1.Execute , "GET"
  297. RaiseEvent StatusChange("Initiating Connection.")
  298. While I1.StillExecuting
  299.     DoEvents
  300. RaiseEvent StatusChange("Connection Accepted, Retrieving File Information.")
  301. If c_Cancel = True Then GoTo Cc
  302. sHeader = I1.GetHeader()
  303. Select Case Mid$(sHeader, 10, 3)
  304. Case 401
  305. RaiseEvent StatusChange("Unauthorized Access, Download Terminated!")
  306. RaiseEvent DLECode(401)
  307. RaiseEvent DLError("Unauthorized Access!")
  308. a_Resume = False
  309. I1.Cancel
  310. m_FileExists = True
  311. m_FileSize = 0
  312. Exit Sub
  313. Case 403
  314. RaiseEvent StatusChange("Access Denied, Download Terminated!")
  315. RaiseEvent DLECode(403)
  316. RaiseEvent DLError("Access Denied!")
  317. a_Resume = False
  318. m_FileExists = True
  319. m_FileSize = 0
  320. I1.Cancel
  321. Exit Sub
  322. Case 404
  323.     RaiseEvent DLError("File Not Found!")
  324.     RaiseEvent StatusChange("File Not Found!")
  325.     RaiseEvent DLECode(2)
  326.     m_FileExists = False
  327.     m_FileSize = 0
  328.     I1.Cancel
  329.     Exit Sub
  330. End Select
  331. If c_Cancel = True Then GoTo Cc
  332. If Mid$(aheader, 6, 3) = "1.1" Then a_Resume = True
  333. m_FileExists = True
  334. t_OldTime = Timer - 1
  335. m_FileSize = CLng(I1.GetHeader("Content-Length"))
  336. RaiseEvent StatusChange("Retrieving File Information Complete!")
  337. Exit Sub
  338. RaiseEvent DLError("Error Reading File Headers.")
  339. RaiseEvent StatusChange("Error Reading File Headers!")
  340. RaiseEvent DLECode(3)
  341. Exit Sub
  342. c_Cancel = False
  343. RaiseEvent DLECode(4)
  344. RaiseEvent StatusChange("cancelled.")
  345. Exit Sub
  346. End Sub
  347. Sub Cancel()
  348. c_Cancel = True
  349. RaiseEvent StatusChange("Cancelling..")
  350. End Sub
  351. Private Function FormatTime(ByVal sglTime As Single) As String
  352.                            
  353. Select Case sglTime
  354.     Case 0 To 59
  355.         FormatTime = Format(sglTime, "0") & " sec"
  356.     Case 60 To 3599
  357.         FormatTime = Format(Int(sglTime / 60), "#0") & _
  358.                      " min " & _
  359.                      Format(sglTime Mod 60, "0") & " sec"
  360.     Case Else
  361.         FormatTime = Format(Int(sglTime / 3600), "#0") & _
  362.                      " hr " & _
  363.                      Format(sglTime / 60 Mod 60, "0") & " min"
  364. End Select
  365. End Function
  366. Private Function FormatFileSize(ByVal dFileSize As Double) As String
  367. Select Case dFileSize
  368.     Case 0 To 1023
  369.         FormatFileSize = Round(dFileSize, 0) & " Bytes/S"
  370.     Case 1024 To 1048575
  371.         FormatFileSize = Round(dFileSize / 1024, 2) & " KB/S"
  372. End Select
  373. End Function
  374. Private Function KeepSave(lpURL As String, lpSL As String) As String
  375. Dim temphold(1 To 2) As String
  376. Dim lplace(1 To 2) As Long
  377. lplace(1) = InStr(Len(lpURL) - 5, lpURL, ".", vbTextCompare)
  378. temphold(1) = Right$(lpURL, Len(lpURL) - lplace(1))
  379. lplace(2) = InStr(Len(lpSL) - 5, lpSL, ".", vbTextCompare)
  380. temphold(2) = Left$(lpSL, lplace(2))
  381. KeepSave = temphold(2) & temphold(1)
  382. End Function
  383. Private Function IsOnline() As Boolean
  384. Dim lflag As Long
  385. Dim blnreturn As Boolean
  386. blnreturn = InternetGetConnectedState(lflag, 0)
  387. If lflag And INTERNET_CONNECTION_MODEM Then
  388. RaiseEvent ConnectionState("Connected Via Modem.")
  389. End If
  390. If lflag And INTERNET_CONNECTION_LAN Then
  391. RaiseEvent ConnectionState("Connected Via LAN.")
  392. End If
  393. If lflag And INTERNET_CONNECTION_PROXY Then
  394. RaiseEvent ConnectionState("Connected Through A Proxy.")
  395. End If
  396. IsOnline = blnreturn
  397. End Function
  398. Sub DLResume()
  399. On Error GoTo DLE
  400. Dim lpHeader As String
  401. Dim lpdestination As String
  402. Dim lpdestination2 As String
  403. Dim strreturn As String
  404. Dim CHUNK As Long
  405. Dim bData() As Byte
  406. Dim intfile As Integer
  407. Dim lBR As Long
  408. Dim SFV As Long
  409. If c_Cancel = True Then
  410. Exit Sub
  411. End If
  412. If m_OnlineCheck = True Then
  413.     If m_Connected = False Then
  414.         RaiseEvent DLECode(5)
  415.         RaiseEvent DLError("No Connection Found!")
  416.         RaiseEvent StatusChange("Download aborted, no connection present!")
  417.         I1.Cancel
  418.         Exit Sub
  419.     End If
  420. End If
  421. I1.Url = m_URL
  422. CHUNK = m_CHUNK
  423. lpdestination = m_SaveLocation
  424. If Dir$(m_SaveLocation) < " " Then
  425. RaiseEvent DLError("Resume File Not Found!")
  426. RaiseEvent DLECode(6)
  427. RaiseEvent StatusChange("Resume File Not Found, Aborting Download!")
  428. Exit Sub
  429. End If
  430. If a_Resume = False Then
  431. RaiseEvent DLError("Resume Not Supported!")
  432. RaiseEvent DLECode(7)
  433. RaiseEvent StatusChange("Resume NotSupported, Aborting Download!")
  434. Exit Sub
  435. End If
  436. I1.Execute , "GET", , "Range: bytes=" & CStr(SFV) & "-" & vbCrLf
  437. While I1.StillExecuting
  438. DoEvents
  439. SFV = FileLen(m_SaveLocation)
  440. intfile = FreeFile()
  441. Open m_SaveLocation For Binary Access Write As #intfile
  442. Seek #intfile, SFV + 1
  443. RaiseEvent StatusChange("Opening " & lpdestination & " For DATA Input.")
  444. m_InDL = True
  445.     If c_Cancel = True Then
  446.     c_Cancel = False
  447.     Close #intfile
  448.     RaiseEvent DLECode(4)
  449.     RaiseEvent StatusChange("Cancelled.")
  450.     Exit Sub
  451.     End If
  452.     bData = I1.GetChunk(CHUNK, icByteArray)
  453.     Put #intfile, , bData
  454.     lBR = lBR + UBound(bData, 1) + 1
  455.     m_BYTES = lBR
  456.     r_RateTransfer = lBR / (Timer - t_OldTime)
  457.     t_Time = (m_FileSize - lBR) / r_RateTransfer
  458.     RaiseEvent Rate(FormatFileSize(r_RateTransfer))
  459.     RaiseEvent TimeLeft(FormatTime(t_Time))
  460.     RaiseEvent RecievedBytes(lBR + SFV)
  461.     RaiseEvent Percent(Round(((lBR + SFV) / m_FileSize) * 100, 0))
  462.     RaiseEvent StatusChange("Recieving File, Inputting DATA to File.")
  463.     If c_Pause = True Then
  464.     While c_Pause = True
  465.     DoEvents
  466.     RaiseEvent StatusChange("Paused.")
  467.     Wend
  468.     End If
  469. Loop While UBound(bData, 1) > 0
  470. Close #intfile
  471. m_InDL = False
  472. RaiseEvent DLComplete
  473. RaiseEvent StatusChange("Download Successful!")
  474. I1.Cancel
  475. Exit Sub
  476. RaiseEvent DLError("Error Downloading File from : " & m_URL)
  477. RaiseEvent StatusChange("Download Aborted Due To Error In Download!")
  478. RaiseEvent DLECode(1)
  479. I1.Cancel
  480. Exit Sub
  481. End Sub
  482. Sub Pause(blnPause As Boolean)
  483. c_Pause = blnPause
  484. If c_Pause = False Then
  485. RaiseEvent StatusChange("Unpausing")
  486. End If
  487. End Sub
  488.